libtest: show files' contents when assertions about them fail
authorSimon McVittie <smcv@debian.org>
Sun, 17 Apr 2016 08:57:06 +0000 (09:57 +0100)
committerColin Walters (automation) <walters+githubbot@verbum.org>
Sun, 17 Apr 2016 14:16:34 +0000 (14:16 +0000)
I've seen an intermittent test failure in an autobuilder (sbuild)
environment where logs from failed builds cannot be retrieved,
but I can no longer reproduce it. Put the contents of the offending
file in the test's failing output so that if the failure comes back,
it can be debugged.

Signed-off-by: Simon McVittie <smcv@debian.org>
Closes: #264
Approved by: cgwalters

tests/libtest.sh

index 572f023c32b204b28a6664e9e463501d56872ea9..afdf3649d510cb3f1383530920dc1557de755cc6 100755 (executable)
@@ -100,13 +100,17 @@ assert_has_dir () {
 
 assert_not_has_file () {
     if test -f "$1"; then
-       echo 1>&2 "File '$1' exists"; exit 1
+        sed -e 's/^/# /' < "$1" >&2
+        echo 1>&2 "File '$1' exists"
+        exit 1
     fi
 }
 
 assert_not_file_has_content () {
     if grep -q -e "$2" "$1"; then
-       echo 1>&2 "File '$1' incorrectly matches regexp '$2'"; exit 1
+        sed -e 's/^/# /' < "$1" >&2
+        echo 1>&2 "File '$1' incorrectly matches regexp '$2'"
+        exit 1
     fi
 }
 
@@ -118,13 +122,17 @@ assert_not_has_dir () {
 
 assert_file_has_content () {
     if ! grep -q -e "$2" "$1"; then
-       echo 1>&2 "File '$1' doesn't match regexp '$2'"; exit 1
+        sed -e 's/^/# /' < "$1" >&2
+        echo 1>&2 "File '$1' doesn't match regexp '$2'"
+        exit 1
     fi
 }
 
 assert_file_empty() {
     if test -s "$1"; then
-       echo 1>&2 "File '$1' is not empty"; exit 1
+        sed -e 's/^/# /' < "$1" >&2
+        echo 1>&2 "File '$1' is not empty"
+        exit 1
     fi
 }